# USB host ***Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.*** --- USB Host是指能够控制和管理USB设备的系统或硬件,它负责为连接的USB设备(如U盘、键盘、鼠标等)提供电源、数据传输和管理功能。 # Quectel Pi H1 USB接口规格 - USB 2.0 Type-A:2个,最大传输速率480 Mbps。 - USB 3.1 Type-C:1个,最大传输速率5 Gbps,兼容USB 2.0。 # 硬件接口 要测试USB接口的HOST模式功能,我们可以测试USB接口连接的设备的基础功能和U盘读写速度。 ```{image} images/image_Swxqb7JsCoeUzTxmz9hcDwc0nmd.webp :width: 601px :height: 359px ``` # 功能使用 ## 查看所有输入设备 通过以下命令查看系统识别的输入设备: ```plaintext cat /proc/bus/input/devices ``` 输出示例: ```plaintext I: Bus=0000 Vendor=0000 Product=0000 Version=0001 N: Name="pm8xxx_vib_ffmemless" P: Phys= S: Sysfs=/devices/platform/soc@0/c440000.spmi/spmi-0/0-09/c440000.spmi:pmic@9:pm7250b-vib@5300/input/input0 U: Uniq= H: Handlers=event0 B: PROP=0 B: EV=200001 B: FF=107030000 0 ``` > 关键参数: > - **Name**:设备名称(如鼠标或键盘) > - **Handlers**:设备对应的事件接口 ## 使用 *lsusb* 查看USB设备 给USB接口连接读卡器、鼠标、键盘等设备,通过插拔测试设备是否正常识别和使用。 ### **未连接外设时** ```plaintext lsusb ``` 终端输出示例: ```plaintext Bus 001 Device 002: ID 1a86:8091 QinHeng Electronics USB HUB Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub ``` ### **连接外设后** ```plaintext lsusb ``` 终端输出示例(以新增键盘和鼠标为例): ```plaintext Bus 001 Device 005: ID 17ef:6099 Lenovo Lenovo Traditional USB Keyboard Bus 001 Device 004: ID 17ef:608d Lenovo Optical Mouse Bus 001 Device 002: ID 1a86:8091 QinHeng Electronics USB HUB Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub ``` ## 使用 *dmesg* 查看设备插拔日志 ```plaintext sudo dmesg | tail -n 20 ``` 该命令将显示系统最近20条内核日志,用于观察设备插拔或驱动加载的情况。 # U盘读写 ## 识别存储设备 插入U盘后,使用 *lsblk* 命令确认U盘的设备名称。 ```bash lsblk ``` 终端输出示例: ```plaintext sda 8:0 0 116.1G 0 disk |-sda1 8:1 0 512M 0 part /efi |-sda2 8:2 0 30M 0 part /var/persist `-sda3 8:3 0 115.6G 0 part / sdb 8:16 0 8M 0 disk |-sdb1 8:17 0 3.5M 0 part |-sdb2 8:18 0 512K 0 part `-sdb3 8:19 0 3.5M 0 part sdc 8:32 0 8M 0 disk |-sdc1 8:33 0 3.5M 0 part |-sdc2 8:34 0 512K 0 part `-sdc3 8:35 0 3.5M 0 part sdd 8:48 0 32M 0 disk |-sdd1 8:49 0 104K 0 part |-sdd2 8:50 0 128K 0 part |-sdd3 8:51 0 1M 0 part |-sdd4 8:52 0 1M 0 part `-sdd5 8:53 0 1M 0 part sde 8:64 0 3G 0 disk |-sde1 8:65 0 512K 0 part |-sde2 8:66 0 64M 0 part |-sde3 8:67 0 256K 0 part |-sde4 8:68 0 2M 0 part |-sde5 8:69 0 5M 0 part |-sde6 8:70 0 4M 0 part |-sde7 8:71 0 8M 0 part |-sde8 8:72 0 4M 0 part |-sde9 8:73 0 32M 0 part |-sde10 8:74 0 128K 0 part |-sde11 8:75 0 80K 0 part |-sde12 8:76 0 2M 0 part |-sde13 8:77 0 2M 0 part |-sde14 8:78 0 128K 0 part |-sde15 8:79 0 32K 0 part |-sde16 259:0 0 1M 0 part |-sde17 259:1 0 256K 0 part |-sde18 259:2 0 512K 0 part |-sde19 259:3 0 256K 0 part |-sde20 259:4 0 64M 0 part |-sde21 259:5 0 2M 0 part |-sde22 259:6 0 5M 0 part |-sde23 259:7 0 4M 0 part |-sde24 259:8 0 8M 0 part |-sde25 259:9 0 4M 0 part |-sde26 259:10 0 32M 0 part |-sde27 259:11 0 128K 0 part |-sde28 259:12 0 80K 0 part |-sde29 259:13 0 2M 0 part |-sde30 259:14 0 2M 0 part |-sde31 259:15 0 128K 0 part |-sde32 259:16 0 32K 0 part |-sde33 259:17 0 1M 0 part |-sde34 259:18 0 256K 0 part |-sde35 259:19 0 4K 0 part |-sde36 259:20 0 4K 0 part |-sde37 259:21 0 4K 0 part |-sde38 259:22 0 16M 0 part |-sde39 259:23 0 30M 0 part |-sde40 259:24 0 1M 0 part |-sde41 259:25 0 32.6M 0 part |-sde42 259:26 0 4K 0 part |-sde43 259:27 0 4K 0 part |-sde44 259:28 0 1M 0 part |-sde45 259:29 0 8M 0 part |-sde46 259:30 0 40M 0 part |-sde47 259:31 0 512M 0 part |-sde48 259:32 0 28K 0 part |-sde49 259:33 0 512K 0 part |-sde50 259:34 0 1M 0 part `-sde51 259:35 0 32.6M 0 part sdf 8:80 0 32M 0 disk |-sdf1 8:81 0 3M 0 part |-sdf2 8:82 0 3M 0 part |-sdf3 8:83 0 3M 0 part `-sdf4 8:84 0 128K 0 part sdg 8:96 1 7.5G 0 disk `-sdg1 8:97 1 7.5G 0 part /mnt/sdcard1 zram0 253:0 0 3.8G 0 disk [SWAP] ``` 注:记录U盘设备名称(示例中为 *sdg*),后续操作需替换为实际设备名称。 ## 测试读写性能 使用 *dd* 命令测试U盘读写速度(*dd* 命令,用于复制和转换文件)。 ### 测试写入速度 ```plaintext sudo dd if=/dev/zero of=/dev/sdg bs=1M count=100 ``` **参数说明:** - *if=/dev/zero* : 指定输入文件为 */dev/zero*,这是一个特殊的文件,会提供无限的零字节数据。 - *of=/dev/sdg* : 指定输出文件为 */dev/sdg*,即U盘设备。 - *bs=1M* : 指定块大小为1MB。 - *count=100* : 指定复制100个块。 该命令会将100MB的零字节数据写入U盘,并显示写入速度。 终端输出示例: ```plaintext 100+0 records in 100+0 records out 104857600 bytes (105 MB, 100 MiB) copied, 0.0367901 s, 2.9 GB/s ``` ### 测试读取速度 ```plaintext sudo dd if=/dev/sdg of=/dev/null bs=1M count=100 ``` - *if=/dev/sda* : 指定输入文件为 */dev/sda*,即U盘设备。 - *of=/dev/null* : 指定输出文件为 */dev/null*,这是一个特殊的文件,会丢弃所有写入的数据。 - *bs=1M* : 指定块大小为1MB。 - *count=100* : 指定复制100个块。 这个命令会将U盘的100MB数据读取到 */dev/null*,并显示读取速度。 终端输出示例: ```plaintext 100+0 records in 100+0 records out 104857600 bytes (105 MB, 100 MiB) copied, 4.97715 s, 21.1 MB/s ```